//
//  AppDelegate.swift
//  WBSwift
//
//  Created by STT on 17/3/1.
//  Copyright © 2017年 STT. All rights reserved.
//

 /*
command + shift + j 可以快速的定位到目录
*/


import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        /*
        *  创建window 
        *  显示根控制器
        *  显示window
         window = UIWindow(frame:UIScreen.main.bounds)
         window?.backgroundColor = UIColor.white
         window?.rootViewController = MainViewController()
         window?.makeKeyAndVisible()
        */
        
        
        // 一般情况下设置全局性的属性 最好放在appdelegate 中可以保证后续所有的操作都是设置之后的操作
        UINavigationBar.appearance().tintColor = UIColor.orange
        
        return true
    }
    
    func testForLog()  {
        
//        QorumLogs.enabled = true
        print(#file) // 获取当前print 的所在的文件路径
        print(#function) //
        print(#line) //  获取当前所在的行数
    }
    
}


/*
 swift  中没有main 行数 只要写在外面都可以全局使用   如果一个函数不进行传递那么则使用默认值
 fileName:NSString = #file  是指 fileName 使用默认值为 #file
 swift 中的Int 类型使用的是 Int
 swift 中的字符串可以和OC 的字符串无缝转接
 
  默认值 ： 如果没有调用者没有传递对应的参数就直接使用默认值 如果传递了对应的参数就直接使用参数
 
 由于编译器可以通过赋值的类型自动推到出数据的真实类型 所以在swift开发中能不写数据类型就不写数据类型：优点是可以减少冗余代码
 */

/*
 泛型 可以让代码更加精简 如果想在函数中使用泛型 必须告诉系统这是一个泛型函数  fun 函数名 <> (形参) -> (返回类型){}
 
 message 是T 类型 T的类型由调用者来决定
 */

/*通过一个标记来控制是否来
 
 swift 中系统内部不会再有宏 
 */
var flag : Bool = false

func ALog<T>(messge:T ,fileName:NSString = #file ,methadName:NSString = #function,lineNumber:Int = #line){

//    print("\((fileName as NSString).pathComponents.last!).\(methadName)[\(lineNumber)]:\(messge)")
    
    #if DEBUG
//    if false {
         print("\(methadName)[\(lineNumber)]:\(messge)")
//    }
    #endif
    
}




